#----------------------------------------------------------------
CC=gcc
#文件类型为C文件，也可为cpp文件
SRCTYPE:=c
#存放目标文件的目录
OBJDIR=./obj
#生成的可执行文件
TARGET=$(OBJDIR)/hello.exe
#源文件和头文件搜索路径
SRCDIR:= ./:./src:./lib
INCDIR:= ./inc
VPATH := $(SRCDIR):$(INCDIR)
#编译选项
CFLAGS= 
#----------------------------------------------------------------

#源文件集合
#SRC_FILES:= $(wildcard ./*.$(SRCTYPE) ./src/*.$(SRCTYPE) ./s1/*.$(SRCTYPE))
SRC_DIR:=$(subst :, ,$(SRCDIR))
SRC_FILES=$(SRC_DIR:%=%/*.$(SRCTYPE))
#指定编译器头文件路径
override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH))) 

source= $(notdir $(wildcard $(SRC_FILES)))
#objs= $(patsubst %.c,$(OBJDIR)/%.o,$(source))
objs= $(source:%.$(SRCTYPE)=$(OBJDIR)/%.o)
$(TARGET): $(objs)
	$(CC) -o $@ $^
$(objs): $(OBJDIR)/%.o : %.$(SRCTYPE)
	@mkdir -p $(OBJDIR)
	$(CC) -c $(CFLAGS) $^ -o $@ 
	
.PHONY:clean
clean:
	-rm $(OBJDIR)/*.o $(TARGET) 
	-rm -r $(OBJDIR)
.PHONY:p
p:
	@echo $(VPATH)
	@echo $(SRC_FILES)
#	@echo SRC_FILES1 = $(wildcard ./*.$(SRCTYPE) ./src/*.$(SRCTYPE))
#	@echo SRC_FILES2 = $(patsubst %,%/\*.$(SRCTYPE),$(subst :, ,$(VPATH))) 
#	@echo $(notdir $(patsubst %,%/*.cpp,$(subst :, ,$(VPATH))))